package algorithm;

import util.ListNode;

/**
 * Description:
 * 给定一个链表，判断链表中是否有环。为了表示给定链表中的环，我们使用整数 pos 来表示链表尾连接到链表中的位置（索引从 0 开始）。如果 pos 是 -1，则在该链表中没有环。
 * @author: chengrongkai
 * Date: 2021/3/8
 */
public class Solution13 {

    public static void main(String[] args) {
        int[] nums = {1,2,3,4,6};
        ListNode node = ListNode.getListNode(nums);
        int  i = 0;
        int pos = 1;
        ListNode pre = new ListNode(0);
        pre.next = node;
        ListNode cur = null;
        while (i < 6){
            if (pos-1 == i){
                cur = node.next;
            }
            if (i == 5){
                node.next = cur;
            }
            node = node.next;
            i++;
        }
        System.out.println(pre);
    }


    /**
     * 快慢指针，如果存在环，则肯定会相遇
     * @param head
     * @return
     */
    public boolean hasCycle(ListNode head) {
        ListNode slow, fast;
        slow = fast = head;
        while (fast != null && fast.next != null) {
            fast = fast.next.next;
            slow = slow.next;
            if (fast == slow) return true;
        }
        return false;
    }
}
